package com.fau.cm.service;

import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Map;

import org.apache.poi.ss.usermodel.Workbook;

import com.fau.cm.entity.MedicalAdmin;
import com.fau.cm.entity.MedicalCallSMSPhrase;
import com.fau.cm.entity.MedicalCallSms;
import com.fau.cm.entity.MedicalPlatform;
import com.fau.cm.util.Page;
import com.fau.cm.entity.MedicalGroup;

/**
 * @desc  短信管理接口
 * @author hufq
 * @datetime 2014年10月13日,下午4:19:43
 */
public interface ISmsManagerService {
	
	/**
	 * @desc  分页查寻短信列表
	 * @param CallSms
	 * @param map
	 * @return
	 * @author hufq
	 * @datetime 2014年10月13日,下午4:21:30
	 */
	public Page findSmsByPage(MedicalAdmin admin, MedicalCallSms callSms, Map<String, Object> map);
	
	/**
	 * @desc 保存短信数据
	 * @param callSms
	 * @author hufq
	 * @datetime 2014年10月13日,下午7:43:38
	 */
	public boolean saveSms(MedicalAdmin admin, MedicalCallSms callSms);
	
	/**
	 * @desc 删除数据信息
	 * @param callSms
	 * @author hufq
	 * @datetime 2014年10月14日,下午3:26:40
	 */
	public void delSms(MedicalCallSms callSms);
	
	/**
	 * @desc 保存编辑短信信息
	 * @param callSms
	 * @author hufq
	 * @datetime 2014年10月14日,下午4:04:32
	 */
	public void saveEditCallSms(MedicalCallSms callSms);
	
	/**
	 * @desc  导出全部短信信息
	 * @return
	 * @throws IOException
	 * @author hufq
	 * @datetime 2014年10月14日,下午8:33:08
	 */
	public Workbook exportExcelAllSms(MedicalAdmin admin) throws Exception;
	
	/**
	 * @desc 导出当前短信信息
	 * @return
	 * @throws IOException
	 * @author hufq
	 * @datetime 2014年10月14日,下午10:32:07
	 */
	public Workbook exportExcelCurrentSms(MedicalAdmin admin, String ids)throws Exception;
	
	/**
	 * @desc 分页查询常用短语设置
	 * @param phrase
	 * @param map 分页参数
	 * @return Page分页工具类
	 * @author yangzj
	 * @datetime 2014年10月19日,下午6:21:34
	 */
	public Page findSmsSettingsByPage(MedicalAdmin admin, MedicalCallSMSPhrase phrase, Map<String, Object> map);
	
	/**
	 * @desc 保存添加常用短语
	 * @param phrase
	 * @return boolean
	 * @author yangzj
	 * @datetime 2014年10月20日,上午11:11:53
	 */
	public boolean saveAdd(MedicalAdmin admin, MedicalCallSMSPhrase phrase);
	
	/**
	 * @desc 保存修改常用短语
	 * @param phrase
	 * @author yangzj
	 * @datetime 2014年10月20日,上午10:51:50
	 */
	public void editSave(MedicalCallSMSPhrase phrase);
	
	/**
	 * @desc 删除常用短语
	 * @param phrase
	 * @author yangzj
	 * @datetime 2014年10月20日,上午11:32:25
	 */
	public void deletePhrase(String ids);
	
	/**
	 * @desc 分页查询中心短信列表
	 * @param callSms
	 * @param map
	 * @return page
	 * @author yangzj
	 * @datetime 2014年10月21日,上午11:32:51
	 */
	public Page findSmsCenterByPage(MedicalAdmin admin, MedicalCallSms callSms, Map<String, Object> map);
	
	/**
	 * @desc 保存中心短信数据
	 * @param callSms
	 * @return boolean
	 * @author yangzj
	 * @datetime 2014年10月21日,上午11:36:29
	 */
	public boolean saveCenterSms(MedicalAdmin admin, MedicalCallSms callSms);
	
	/**
	 * @desc 删除中心数据信息
	 * @param callSms
	 * @author yangzj
	 * @datetime 2014年10月21日,上午11:36:04
	 */
	public void delCenterSms(MedicalCallSms callSms);
	
	/**
	 * @desc 保存编辑中心短信信息
	 * @param callSms
	 * @author yangzj
	 * @datetime 2014年10月21日,上午11:35:32
	 */
	public void saveEditCenterCallSms(MedicalCallSms callSms);
	
	/**
	 * @desc  导出中心全部短信信息
	 * @return Workbook
	 * @throws IOException
	 * @author hufq
	 * @datetime 2014年10月14日,下午8:33:08
	 */
	public Workbook exportExcelAllCenterSms(MedicalAdmin admin,MedicalCallSms callSms) throws Exception;
	
	/**
	 * @desc 导出当前页中心短信信息
	 * @param ids
	 * @return Workbook
	 * @throws IOException
	 * @author yangzj
	 * @datetime 2014年10月21日,上午11:34:39
	 */
	public Workbook exportExcelCurrentCenterSms(MedicalAdmin admin, String ids)throws Exception;
	
	/**
	 * @desc 分页查询本组短信列表
	 * @param callSms
	 * @param map
	 * @return page
	 * @author yangzj
	 * @datetime 2014年10月21日,上午11:32:51
	 */
	public Page findSmsGroupByPage(MedicalAdmin admin, MedicalCallSms callSms, Map<String, Object> map);
	
	/**
	 * @desc 保存本组短信数据
	 * @param callSms
	 * @return boolean
	 * @author yangzj
	 * @datetime 2014年10月21日,上午11:36:29
	 */
	public boolean saveGroupSms(MedicalAdmin admin, MedicalCallSms callSms);
	
	/**
	 * @desc 删除本组数据信息
	 * @param callSms
	 * @author yangzj
	 * @datetime 2014年10月21日,上午11:36:04
	 */
	public void delGroupSms(MedicalCallSms callSms);
	
	/**
	 * @desc 保存编辑本组短信信息
	 * @param callSms
	 * @author yangzj
	 * @datetime 2014年10月21日,上午11:35:32
	 */
	public void saveEditGroupCallSms(MedicalCallSms callSms);
	
	/**
	 * @desc  导出本组全部短信信息
	 * @return Workbook
	 * @throws IOException
	 * @author hufq
	 * @datetime 2014年10月14日,下午8:33:08
	 */
	public Workbook exportExcelAllGroupSms(MedicalAdmin admin,MedicalCallSms callSms) throws Exception;
	
	/**
	 * @desc 导出当前页本组短信信息
	 * @param ids
	 * @return Workbook
	 * @throws IOException
	 * @author yangzj
	 * @datetime 2014年10月21日,上午11:34:39
	 */
	public Workbook exportExcelCurrentGroupSms(MedicalAdmin admin, String ids)throws Exception;
	
	/**
	 * @desc 分页查询我的短信列表
	 * @param callSms
	 * @param map
	 * @return page
	 * @author yangzj
	 * @datetime 2014年10月21日,上午11:32:51
	 */
	public Page findSmsMyByPage(MedicalAdmin admin, MedicalCallSms callSms, Map<String, Object> map);
	
	/**
	 * @desc 保存我的短信数据
	 * @param callSms
	 * @return boolean
	 * @author yangzj
	 * @datetime 2014年10月21日,上午11:36:29
	 */
	public boolean saveMySms(MedicalAdmin admin, MedicalCallSms callSms);
	
	/**
	 * @desc 删除我的数据信息
	 * @param callSms
	 * @author yangzj
	 * @datetime 2014年10月21日,上午11:36:04
	 */
	public void delMySms(MedicalCallSms callSms);
	
	/**
	 * @desc 保存编辑我的短信信息
	 * @param callSms
	 * @author yangzj
	 * @datetime 2014年10月21日,上午11:35:32
	 */
	public void saveEditMyCallSms(MedicalCallSms callSms);
	
	/**
	 * @desc  导出我的全部短信信息
	 * @return Workbook
	 * @throws IOException
	 * @author hufq
	 * @datetime 2014年10月14日,下午8:33:08
	 */
	public Workbook exportExcelAllMySms(MedicalAdmin admin,MedicalCallSms callSms) throws Exception;
	
	/**
	 * @desc 导出当前页我的短信信息
	 * @param ids
	 * @return Workbook
	 * @throws IOException
	 * @author yangzj
	 * @datetime 2014年10月21日,上午11:34:39
	 */
	public Workbook exportExcelCurrentMySms(MedicalAdmin admin, String ids)throws Exception;
	
	/**
	 * @desc 根据客户id 查询给该客户发送的短信
	 * @param cId 客户id
	 * @return
	 * @author kangyj
	 * @datetime 2014年12月5日,下午2:29:55
	 */
	public List<MedicalCallSms> findCustomerSmsList(String cId);
	
	/**
	 * @desc 查询所有客服组
	 * @param cid 中心ID
	 * @return List<MedicalGroup>
	 * @author liy
	 * @datetime 2014年12月17日,上午10:55:55
	 */
	public List<MedicalGroup> findAllCurSerGroup(String cid);
	
	/**
	 * @desc 查询所有话务中心
	 * @param admin 当前登录用户
	 * @return List<MedicalPlatform>
	 * @author liy
	 * @datetime 2014年12月17日,下午1:02:11
	 */
	public List<MedicalPlatform> findAllCurSerCenter(MedicalAdmin admin);
	
	/**
	 * @desc 查询某客服组下的所有客服
	 * @param groupId 客服组ID
	 * @return List<MedicalAdmin>
	 * @author liy
	 * @datetime 2014年12月17日,上午11:00:25
	 */
	public List<MedicalAdmin> findCurSerByGroupId(String groupId);

	/**
	 * @desc 根据类型查询常用短语
	 * @param cId
	 * @return 
	 * @author liy
	 * @datetime 2015年1月9日,下午4:59:09
	 */
	public List<MedicalCallSMSPhrase> findSmsPhraseByType(String type);
	
	/**
	 * @desc 导入短信模版
	 * @return String
	 * @throws Exception 
	 * @author liy
	 * @datetime 2015年2月13日,下午5:01:05
	 */
	public String importSmsExcel(MedicalAdmin admin, File file) throws Exception;
	
	/**
	 * @desc 是否发送生日短信
	 * @return boolean
	 * @author liy
	 * @datetime 2015年2月14日,下午3:32:12
	 */
	public boolean isSend();
	
	/**
	 * @desc 保存发送生日短信设置
	 * @return boolean
	 * @author liy
	 * @datetime 2015年2月14日,下午3:43:02
	 */
	public boolean saveSwitch(String keyValue);
}
